Tutorial Lengkap: Membuat Fitur Print PDF di Laravel

Posted on 16 August 2024


Halo teman-teman! Dalam artikel ini, kita akan membuat fitur yang sangat berguna untuk aplikasi Laravel Anda, yaitu fitur cetak PDF di halaman Mata Kuliah. Dengan fitur ini, pengguna bisa mengunduh data Mata Kuliah dalam format PDF untuk keperluan dokumentasi atau laporan. Tutorial ini akan saya buat lengkap dan sedetail mungkin, agar teman-teman yang baru belajar Laravel pun bisa mengikutinya dengan mudah. Yuk, kita mulai!

Langkah Pertama: Instalasi Package DomPDF untuk Laravel

Pertama-tama, kita perlu memasang package DomPDF yang akan digunakan untuk menghasilkan file PDF. Package ini membuat proses konversi data ke PDF menjadi sangat mudah di Laravel.

a. Instalasi Package

Jalankan perintah ini di terminal:

composer require barryvdh/laravel-dompdf

Package ini akan menambahkan DomPDF ke dalam project Laravel Anda.

b. Registrasi Service Provider dan Facade (Untuk Versi Laravel 5.5 ke Bawah)

Pada Laravel 5.5 ke atas, service provider dan facade secara otomatis didaftarkan, tetapi untuk Laravel versi sebelumnya, tambahkan kode berikut ke file config/app.php:

  • Di bagian providers:
Barryvdh\DomPDF\ServiceProvider::class,
  • Di bagian aliases:

'PDF' => Barryvdh\DomPDF\Facade::class,

c. Publikasi Konfigurasi DomPDF

Setelah itu, jalankan perintah berikut untuk mempublikasikan file konfigurasi DomPDF:

php artisan vendor:publish --provider="Barryvdh\DomPDF\ServiceProvider"

Setelah melakukan langkah ini, package DomPDF sudah siap digunakan.

Langkah Kedua: Membuat Route untuk Cetak PDF

Selanjutnya, kita akan menambahkan route di routes/web.php yang akan menangani permintaan untuk mencetak PDF.

a. Buka file routes/web.php

Buka file routes/web.php yang terletak di folder routes pada struktur Laravel. Tambahkan route baru berikut:

use App\Http\Controllers\MatakuliahController; Route::get('/matakuliah/pdf', [MatakuliahController::class, 'exportPDF'])->name('matakuliah.pdf');

Route ini akan mengarahkan pengguna ke metode exportPDF di MatakuliahController yang akan kita buat pada langkah berikutnya.

Langkah Ketiga: Membuat Metode exportPDF di Controller

Sekarang, kita akan membuat logika untuk mencetak PDF di MatakuliahController. Metode ini akan mengambil data Mata Kuliah dari database dan mengonversinya menjadi PDF.

a. Buka MatakuliahController.php

Buka file MatakuliahController.php yang ada di folder app/Http/Controllers/.

b. Tambahkan Metode exportPDF

Tambahkan kode berikut ke dalam MatakuliahController:

use Barryvdh\DomPDF\Facade as PDF; public function exportPDF() { // Mengambil semua data Mata Kuliah dari database $matakuliah = Matakuliah::all();
// Load view untuk PDF dan mengirimkan data Mata Kuliah ke view tersebut $pdf = PDF::loadView('matakuliah.pdf', compact('matakuliah'));
// Mengunduh file PDF dengan nama 'matakuliah.pdf' return $pdf->download('matakuliah.pdf'); }

Metode ini menggunakan DomPDF untuk mengonversi data Mata Kuliah yang diambil dari database ke dalam format PDF, kemudian file PDF tersebut akan diunduh oleh pengguna.

Langkah Keempat: Membuat View untuk PDF

Selanjutnya, kita perlu membuat view yang akan digunakan sebagai template untuk file PDF. View ini akan menampilkan data Mata Kuliah dalam format tabel yang rapi.

a. Buat Folder dan File untuk View PDF

Buat file baru bernama pdf.blade.php di dalam folder resources/views/matakuliah/. Jika folder matakuliah belum ada, buat folder tersebut terlebih dahulu, Lalu Tambahkan Kode Berikut.

@extends('layouts.app') @section('content') <div class="container"> <h1>Daftar Mata Kuliah</h1> <a href="{{ route('matakuliah.create') }}" class="btn btn-primary mb-3">Tambah Mata Kuliah</a> @if ($message = Session::get('success')) <div class="alert alert-success"> {{ $message }} </div> @endif <table class="table table-bordered"> <thead> <tr> <th>No</th> <th>Kode Mata Kuliah</th> <th>Nama Mata Kuliah</th> <th>Aksi</th> </tr> </thead> <tbody> @foreach ($matakuliah as $mk) <tr> <td>{{ $loop->iteration }}</td> <td>{{ $mk->CodeMataKuliah }}</td> <td>{{ $mk->NamaMataKuliah }}</td> <td> <a href="{{ route('matakuliah.edit', $mk->id) }}" class="btn btn-warning">Edit</a> <form action="{{ route('matakuliah.destroy', $mk->id) }}" method="POST" style="display:inline;"> @csrf @method('DELETE') <button type="submit" class="btn btn-danger" onclick="return confirm('Yakin ingin menghapus?')">Hapus</button> </form> </td> </tr> @endforeach </tbody> </table> {{ $matakuliah->links() }} </div> @endsection

b. Tambahkan Tombol Print PDF di View

Isi file pdf.blade.php dengan kode HTML berikut:

@extends('layouts.app') @section('content') <div class="container"> <h1>Daftar Mata Kuliah</h1> <a href="{{ route('matakuliah.create') }}" class="btn btn-primary mb-3">Tambah Mata Kuliah</a> <a href="{{ route('matakuliah.pdf') }}" class="btn btn-danger mb-3">Cetak PDF</a> @if ($message = Session::get('success')) <div class="alert alert-success"> {{ $message }} </div> @endif <table class="table table-bordered"> <thead> <tr> <th>No</th> <th>Kode Mata Kuliah</th> <th>Nama Mata Kuliah</th> <th>Aksi</th> </tr> </thead> <tbody> @foreach ($matakuliah as $mk) <tr> <td>{{ $loop->iteration }}</td> <td>{{ $mk->CodeMataKuliah }}</td> <td>{{ $mk->NamaMataKuliah }}</td> <td> <a href="{{ route('matakuliah.edit', $mk->id) }}" class="btn btn-warning">Edit</a> <form action="{{ route('matakuliah.destroy', $mk->id) }}" method="POST" style="display:inline;"> @csrf @method('DELETE') <button type="submit" class="btn btn-danger" onclick="return confirm('Yakin ingin menghapus?')">Hapus</button> </form> </td> </tr> @endforeach </tbody> </table> {{ $matakuliah->links() }} </div> @endsection

Tombol ini akan mengarahkan pengguna ke route yang memicu proses cetak PDF dan mengunduhnya.

Langkah Terakhir: Menjalankan Aplikasi

Sekarang, jalankan aplikasi Laravel Anda dan buka halaman daftar Mata Kuliah. Anda akan melihat tombol Cetak PDF di bagian atas tabel. Ketika tombol ini diklik, file PDF yang berisi semua data Mata Kuliah akan otomatis diunduh.

Kesimpulan

Selamat! Anda telah berhasil menambahkan fitur cetak PDF di halaman Mata Kuliah Laravel Anda. Fitur ini sangat berguna untuk menghasilkan laporan dalam format PDF yang bisa diunduh dan dicetak dengan mudah.

Dengan mengikuti tutorial ini, Anda telah belajar cara menggunakan package DomPDF untuk menghasilkan PDF dari view Laravel, cara membuat route dan controller untuk menangani permintaan cetak, serta cara menampilkan tombol cetak PDF di halaman Mata Kuliah.

Jika ada yang ingin Anda tanyakan atau jika Anda ingin mengembangkan fitur ini lebih lanjut, jangan ragu untuk bereksperimen dan menyesuaikannya dengan kebutuhan aplikasi Anda. Selamat mencoba!